


//================v1要点总结===============
// k > 2
// 偷k, Max(k) = Max(k-2) + m(k)
// 不偷k, Max(k) = Max(k-1)
// 综合： Max(k) = Max{Max(k-2) + m(k), Max(k-1)  }
// 再考虑 首尾相连的情况，官方题解，偷头则不偷尾，偷尾则不偷头，就两种情况，范围 0~n-1 或者 1~n ，再求两者最大值即可

/**
 * @param {number[]} nums
 * @return {number}
 */
var rob = function (nums) {

    let len = nums.length

    if (len === 1) {
        return nums[0]
    }

    if (len === 2) {
        return Math.max(nums[0], nums[1])
    }

    function _rob(start, end) {
        let max2 = nums[start]
        let max1 = Math.max(max2, nums[start + 1])
        let max
        for (let i = start + 2; i <= end; i++) {
            max = Math.max(max2 + nums[i], max1)
            max2 = max1
            max1 = max
        }
        return max1
    }
    return Math.max(_rob(0, len - 2), _rob(1, len - 1))
};
let input = [2, 3, 2]
console.log(rob(input))
